package org.huawei260.String;

import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/10/25-18:02
 * @Description:
 *
 * 定义当一个字符串只有元音字母(a, e, i, o, u, A, E, I, O, U)组成,
 * 称为元音字符串，现给定一个字符串，请找出其中最长的元音字符串，
 * 并返回其长度，如果找不到请返回0，
 * 字符串中任意一个连续字符组成的子序列称为该字符串的子串
 *
 * 输入描述
 * 一个字符串其长度 0 < length ,字符串仅由字符a-z或A-Z组成
 *
 * 输出描述
 * 一个整数，表示最长的元音字符子串的长度
 *
 * 示例一
 * 输入
 * asdbuiodevauufgh
 * 输出
 * 3
 *
 * @version: 1.0
 */
public class O0065_最长的元音字符串 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println(maxVowel(scanner.nextLine()));
	}
	public static int maxVowel(String line) {
		if (line == null || line.length() == 0) {
			return 0;
		}
		int max = 0;
		int start = 0, end = 0;
		int sum = 0; // 用来记录当前子串中元音的个数

		while (end < line.length()) {
			if (isVowel(line.charAt(end))) {
				sum++; // 如果是元音，元音计数加1
			}
			// 当遇到非元音或者已经到了字符串末尾时，开始收缩窗口
			if (sum >= 1 && !isVowel(line.charAt(end))) {
				max = Math.max(max, sum); // 更新最大长度
				while (sum > 0) {
					if (isVowel(line.charAt(start))) {
						sum--; // 收缩窗口，元音计数减1
					}
					start++; // 开始移动窗口
				}
			}
			end++; // 移动窗口
		}

		if (sum > 0) {
			max = Math.max(max, sum); // 最后一次窗口可能没有收缩
		}
		return max;
	}

//	private static boolean isVowel(char c) {
//		return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
//	}

	private static boolean isVowel(char c) {
		return "aeiouAEIOU".indexOf(c) != -1;
	}
}
